SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[siogde_rpt_RequerimientoUnidadMilitar]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
	drop procedure [dbo].[siogde_rpt_RequerimientoUnidadMilitar]
GO

CREATE PROCEDURE [dbo].[siogde_rpt_RequerimientoUnidadMilitar]	
					@GestionId int = 3,
					@UnidadMilitar varchar(250) = '641,691,657,628,675,660'
AS
BEGIN



  SELECT   
		  um.UnidadMilitarId, 
		  UnidadMilitarCodigo = um.Codigo, 
		  UnidadMilitarNombre = um.Nombre,
		  rc.NumPersonas,
		  rc.PromocionDesde,
		  rc.PromocionHasta,
		  Categoria = cu.Nombre+' - '+ru.Nombre,   
		  Grado = g.Codigo+' - '+g.Nombre, 
		  Arma = a.Codigo+' - '+a.Nombre, 
		  Especialidad = e.Codigo+' - '+e.Nombre,
		  TipoCargoComando = tc.Codigo+' - '+tc.Nombre,
		  CountOcupados = count(da.DestinoAsignadoId) 
  FROM UnidadMilitar um
  INNER JOIN dbo.siodge_split_string(',', @UnidadMilitar) c on c.[values] = um.UnidadMilitarId
  INNER JOIN RequerimientoConfig rc on rc.UnidadMilitarId = um.UnidadMilitarId
  INNER JOIN CategoriaUnidad cu on cu.CategoriaUnidadId = um.CategoriaUnidadId
  INNER JOIN RegionUnidad ru on ru.RegionUnidadId = cu.RegionUnidadId
  LEFT JOIN DestinoAsignado da on da.RequerimientoConfigId = rc.RequerimientoConfigId
   
  INNER JOIN Grado g on g.GradoId = rc.GradoId
  INNER JOIN Arma a on a.ArmaId = rc.ArmaId
  LEFT JOIN Especialidad e on e.EspecialidadId = rc.EspecialidadId
  LEFT JOIN TipoCargoComando tc on tc.TipoCargoComandoId = rc.TipoCargoComandoId 
  WHERE rc.GestionId = @GestionId
  group by um.UnidadMilitarId, 
			um.Codigo, 
			um.Nombre, 
			cu.Nombre,ru.Nombre,
			 rc.NumPersonas,
			  rc.PromocionDesde,
			  rc.PromocionHasta, 
			  g.Codigo,g.Nombre, 
			  a.Codigo,a.Nombre , 
			  e.Codigo,e.Nombre ,
			  tc.Codigo,tc.Nombre 
  
  
  --exec dbo.siogde_rpt_RequerimientoUnidadMilitar

END






